package com.youbff.task.cluster.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.youbff.task.cluster.dao.ClusterDao;
import com.youbff.task.cluster.domain.ClusterPO;
import com.youbff.task.cluster.dto.PageQueryDTO;
import com.youbff.task.cluster.dto.ServerInfoDTO;
import com.youbff.task.cluster.service.ClusterService;
import com.youbff.task.datasource.DataSourceChange;
import com.youbff.task.utils.BeanUtils;

@Service
public class ClusterServiceImpl implements ClusterService {

    @Autowired
    private ClusterDao clusterDao;
    
    @Override
    @DataSourceChange(dataSourceName="taskSystem")
    public void clearClusterInfo(List<String> clusterNameList) {
        clusterDao.clearClusterInfo(clusterNameList);
    }

    @Override
    @DataSourceChange(dataSourceName="taskSystem")
    public ServerInfoDTO addClusterInfo(ServerInfoDTO serverInfoDTO) {
        ClusterPO clusterPO = BeanUtils.convert(serverInfoDTO, ClusterPO.class);
        clusterDao.addClusterInfo(clusterPO);
        serverInfoDTO.setId(clusterPO.getId());
        return serverInfoDTO;
    }

    @Override
    @DataSourceChange(dataSourceName="taskSystem")
    public void updateClusterInfo(ServerInfoDTO serverInfoDTO) {
        ClusterPO clusterPO = BeanUtils.convert(serverInfoDTO, ClusterPO.class);
        clusterDao.updateClusterInfo(clusterPO);
    }

    @Override
    @DataSourceChange(dataSourceName="taskSystem")
    public PageQueryDTO<ServerInfoDTO> queryClusterInfo(
            ServerInfoDTO serverInfoDTO) {
        ClusterPO clusterPO = BeanUtils.convert(serverInfoDTO, ClusterPO.class);
        Page<ClusterPO> page = PageHelper.startPage(
                serverInfoDTO.getPageNumber(), serverInfoDTO.getPageSize());
        List<ClusterPO> list = clusterDao.queryClusterInfo(clusterPO);
        PageQueryDTO<ServerInfoDTO> pageQuery = new PageQueryDTO<ServerInfoDTO>();
        pageQuery.setPageNum(serverInfoDTO.getPageNumber());
        pageQuery.setPageSize(serverInfoDTO.getPageSize());
        pageQuery.setTotal((int) page.getTotal());
        pageQuery.setRows(BeanUtils.convertList(list, ServerInfoDTO.class));
        return pageQuery;
    }

}
